comment "boost needs a toolchain w/ C++, threads, wchar"
	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR

config BR2_PACKAGE_BOOST
	bool "boost"
	depends on BR2_INSTALL_LIBSTDCPP
	# Boost could theorically be built with threading=single, but
	# that unfortunately doesn't work. Until someone fixes that,
	# let's depend on threads.
	depends on BR2_TOOLCHAIN_HAS_THREADS
	depends on BR2_USE_WCHAR
	help
	  A general purpose C++ library

	  http://www.boost.org/

if BR2_PACKAGE_BOOST

choice
	prompt "Layout"
	default BR2_PACKAGE_BOOST_LAYOUT_SYSTEM
	help
	  Selects the layout of Boost binary names

config BR2_PACKAGE_BOOST_LAYOUT_SYSTEM
	bool "system"
	help
	  Boost binary names do not include the Boost version number
	  or the name and version number of the compiler.

config BR2_PACKAGE_BOOST_LAYOUT_TAGGED
	bool "tagged"
	help
	  Boost binary names include the encoded build properties such
	  as variant and threading, but do not include compiler name
	  and version, or Boost version. This option is useful if you
	  build several variants of Boost, using the same compiler.

config BR2_PACKAGE_BOOST_LAYOUT_VERSIONED
	bool "versioned"
	help
	  Boost binary names include the Boost version number, name
	  and version of the compiler and encoded build properties.

endchoice

config BR2_PACKAGE_BOOST_LAYOUT
	string
	default "system" if BR2_PACKAGE_BOOST_LAYOUT_SYSTEM
	default "tagged" if BR2_PACKAGE_BOOST_LAYOUT_TAGGED
	default "versioned" if BR2_PACKAGE_BOOST_LAYOUT_VERSIONED

config BR2_PACKAGE_BOOST_ATOMIC
	bool "boost-atomic"

config BR2_PACKAGE_BOOST_CHRONO
	bool "boost-chrono"

config BR2_PACKAGE_BOOST_CONTAINER
	bool "boost-container"

# see
# http://www.boost.org/doc/libs/1_59_0/libs/context/doc/html/context/architectures.html
# for the list of supported architectures. Sparc pretends to be
# supported, but it doesn't build.
config BR2_PACKAGE_BOOST_CONTEXT
	bool "boost-context"
	depends on ((BR2_arm || BR2_armeb) && BR2_ARM_CPU_HAS_ARM) || \
		BR2_i386 || BR2_mips || BR2_mipsel || BR2_powerpc || BR2_x86_64

config BR2_PACKAGE_BOOST_COROUTINE
	bool "boost-coroutine"
	depends on BR2_PACKAGE_BOOST_CONTEXT

config BR2_PACKAGE_BOOST_COROUTINE2
	bool "boost-coroutine2"
	depends on BR2_PACKAGE_BOOST_CONTEXT

config BR2_PACKAGE_BOOST_DATE_TIME
	bool "boost-date_time"

config BR2_PACKAGE_BOOST_EXCEPTION
	bool "boost-exception"

config BR2_PACKAGE_BOOST_FILESYSTEM
	bool "boost-filesystem"

config BR2_PACKAGE_BOOST_GRAPH
	bool "boost-graph"

config BR2_PACKAGE_BOOST_GRAPH_PARALLEL
	bool "boost-graph_parallel"

config BR2_PACKAGE_BOOST_IOSTREAMS
	bool "boost-iostreams"
	select BR2_PACKAGE_BZIP2
	select BR2_PACKAGE_ZLIB

config BR2_PACKAGE_BOOST_LOCALE
	bool "boost-locale"
	select BR2_PACKAGE_LIBICONV if !BR2_ENABLE_LOCALE

config BR2_PACKAGE_BOOST_LOG
	bool "boost-log"
	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
	# for some reason, uClibc on PowerPC fails to build the boost
	# log module
	depends on !(BR2_powerpc && BR2_TOOLCHAIN_USES_UCLIBC)

comment "boost-log needs a toolchain w/ NPTL"
	depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL
	depends on !(BR2_powerpc && BR2_TOOLCHAIN_USES_UCLIBC)

config BR2_PACKAGE_BOOST_MATH
	bool "boost-math"

config BR2_PACKAGE_BOOST_METAPARSE
	depends on BR2_USE_MMU # boost-test
	select BR2_PACKAGE_BOOST_TEST
	bool "boost-metaparse"

config BR2_PACKAGE_BOOST_MPI
	bool "boost-mpi"

config BR2_PACKAGE_BOOST_PROGRAM_OPTIONS
	bool "boost-program_options"

config BR2_PACKAGE_BOOST_PYTHON
	depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3
	bool "boost-python"

config BR2_PACKAGE_BOOST_RANDOM
	bool "boost-random"

config BR2_PACKAGE_BOOST_REGEX
	bool "boost-regex"

config BR2_PACKAGE_BOOST_SERIALIZATION
	bool "boost-serialization"

config BR2_PACKAGE_BOOST_SIGNALS
	bool "boost-signals"

config BR2_PACKAGE_BOOST_SYSTEM
	bool "boost-system"

config BR2_PACKAGE_BOOST_TEST
	bool "boost-test"
	depends on BR2_USE_MMU # fork()

config BR2_PACKAGE_BOOST_THREAD
	bool "boost-thread"

config BR2_PACKAGE_BOOST_TIMER
	bool "boost-timer"

config BR2_PACKAGE_BOOST_TYPE_ERASURE
	bool "boost-type_erasure"

config BR2_PACKAGE_BOOST_WAVE
	bool "boost-wave"
	# limitation of assembler for coldfire
	# error: Tried to convert PC relative branch to absolute jump
	depends on !BR2_m68k_cf

endif
